# day_002

##列表##
#   1\列表list [] 2\下标和切片 3\列表查询index()方法和count()方法 4\列表的增加和删除append和pop
#   5\列表修改数据和反转reverse() 6\排序sort() 7\列表的嵌套

# 列表，list，使用[]
# 列表可以存放任意多个数据；列表中可以存放任意多个数据；列表中数据之间 使用 逗号隔开

# 方式1，使用类实例化的方式     变量 = list()
list1 = list()
print(type(list1),list1)    # <class 'list'> []

# 方式1，定义非空列表，也称为类型转换 list(可迭代类型） 可迭代类型：能够使用for循环 （比如：容器）
# 将容器中的 每个数据 都作为列表中一个数据进行保存
list2 = list('abcd')
print(list2)    # ['a', 'b', 'c', 'd']

# 方式2，直接使用[]进行定义（使用较多）
# 定义空列表和非空列表
list3 = []
print(list3)
list4 = [1,3.14,'hello',False]
print(list4)
# []
# [1, 3.14, 'hello', False]

# 列表的下标和切片
# 列表的切片 得到的是 新的列表
# 字符串的切片 得到的是 新的字符串

print(list4[0])
print(list4[-1])
print(list4[1:3])
# 1
# False
# [3.14, 'hello']

# index()这个方法的作用 和 字符串中的 find()的作用是一样
# 列表中没有find()方法的，只有index()方法
# 字符串中 同时存在 find()和index()方法

# index()   1、找到 返回下标 2、没有找到，直接报错。  find()没找到是返回-1,找到返回首字母的下标
list_001 = ['hello',2,3,2,3,4]
# 查找第一个2出现的下标
num = list_001.index(2)     #   1
print(num)

# conut()方法
# 列表.count(数据)  统计 指定数据再列表中出现的次数
# 统计数据2出现的次数
num1 = list_001.count(2)    #   2
print(num1)
# 统计数据20出现的次数
num2 = list_001.count(20)   #   0
print(num2)

# 添加数据list.append()
# 列表.append(数据) 向列表的尾部添加数据
# 返回：None,所以不用使用    变量 = 列表.append()
#   直接在原列表中添加数据，不会生成新的列表，如果想要查看添加后的数据，直接print打印原列表即可
#   一次只能添加一个元素
list_002 = []
print(list_002)
list_002.append('张三')
print(list_002)
list_002.append('李四')
list_002.append('王五')
list_002.append('赵六')
print(list_002)
# 删除数据list.pop(index)
# 列表.pop(index) 根据下标删除列表中的数据
# index 可以不写，默认删除最后一个数据
# 返回,删除的数据
list_002.pop()
print(list_002)
name = list_002.pop(1)
print('删除的对象是:',name)
print(list_002)
# []
# ['张三']
# ['张三', '李四', '王五', '赵六']
# ['张三', '李四', '王五']
# 删除的对象是: 李四
# ['张三', '王五']

# 修改数据
# 列表[下标] = 新数据
list_003 = ['1',2,3,4]
list_003[0] = 0
print(list_003)
# 反转
# 1.列表[::-1] 得到一个新的列表,原列表不会改动
# 2.列表.reverse() 直接修改原列表的数据
list_004 = [1,2,3,4]
list_005 = list_004[::-1]
print(list_004)
print(list_005)
list_005.reverse()
print(list_005)

# 列表排序
# 前提：列表中数据要是一样的数据类型
# 列表.sort() 升序
# 列表.sort(reverse=True) 降序

list_006 = [1,4,7,2,6,3,9,8,5]
# list_006.sort()   等价于下行
list_006.sort(reverse=False)    #升序
print(list_006)
list_006.sort(reverse=True)     #降序
print(list_006)

# 列表的嵌套类似于二维数组  列表中的数据都是列表
list_007 = [['张三','18','功能测试'],['李四','20','性能测试']]
print(list_007[0][0])   #张三
list_007[0].append('男')
print(list_007)
print(list_007[0].pop(-1))
# 利用for循环
for info in list_007:   #   info是列表
    print(info[1])      #   从容器中取出数据
